package br.edu.sistemaacademico.util;

import java.awt.List;
import java.util.LinkedList;

public class Validar {
		
	public static boolean cnpj(String cnpj) {
		boolean ret = false;
		String base = "00000000000000";  
        if (cnpj.length() <= 14) {  
           if (cnpj.length() < 14) {  
              cnpj = base.substring(0, 14 - cnpj.length()) + cnpj;  
           }  
    
           int soma = 0;  
           int dig = 0;  
           String cnpj_calc = cnpj.substring(0, 12);  
           char[] chr_cnpj = cnpj.toCharArray();  
           // Primeira parte  
           for (int i = 0; i < 4; i++)  
              if (chr_cnpj[i] - 48 >= 0 && chr_cnpj[i] - 48 <= 9)  
                 soma += (chr_cnpj[i] - 48) * (6 - (i + 1));  
           for (int i = 0; i < 8; i++)  
              if (chr_cnpj[i + 4] - 48 >= 0 && chr_cnpj[i + 4] - 48 <= 9)  
                 soma += (chr_cnpj[i + 4] - 48) * (10 - (i + 1));  
           dig = 11 - (soma % 11);  
           cnpj_calc += (dig == 10 || dig == 11) ? "0" : Integer.toString(dig);  
           // Segunda parte  
           soma = 0;  
           for (int i = 0; i < 5; i++)  
              if (chr_cnpj[i] - 48 >= 0 && chr_cnpj[i] - 48 <= 9)  
                 soma += (chr_cnpj[i] - 48) * (7 - (i + 1));  
           for (int i = 0; i < 8; i++)  
              if (chr_cnpj[i + 5] - 48 >= 0 && chr_cnpj[i + 5] - 48 <= 9)  
                 soma += (chr_cnpj[i + 5] - 48) * (10 - (i + 1));  
           dig = 11 - (soma % 11);  
           cnpj_calc += (dig == 10 || dig == 11) ? "0" : Integer.toString(dig);  
           ret = cnpj.equals(cnpj_calc);  
    
        }  
        if (ret) {  
           return true;  
        } else {  
           return false;  
        }    
	
	}
	public static boolean cpf(String cpf) {
	   
	 int soma = 0, mult = 11;  
       int[] var = new int[11];  
         
       // Verifica se o CPF cont�m menos de 11 d�gitos.  
       if (cpf.length() < 11)
       {  
           return false;  
       }  
         
       // Recebe os n�meros e realiza a multiplica��o e soma.  
       for(int i = 0; i < 11; i++) {  
           var[i] = Integer.parseInt(""+cpf.charAt(i));  
           if(i<9) soma += (var[i] * --mult);  
       }  
         
       // Cria o primeiro d�gito verificador.  
       int resto = soma%11;  
       if(resto < 2) {  
           var[9] = 0;  
       } else {   
           var[9] = 11 - resto;  
       }      
         
       // Reinicia os valores.  
       soma = 0;  
       mult = 11;    
         
       // Realiza a multiplica��o e soma do segundo d�gito.  
       for(int i = 0; i < 10; i++) soma += var[i] * mult--;  
         
       // Cria o segundo d�gito verificador.  
       resto = soma%11;  
       if(resto < 2) {  
           var[10] = 0;  
       } else {   
           var[10] = 11 - resto;  
       }  
         
       int v1 = Integer.parseInt(""+cpf.charAt(9));  
       int v2 = Integer.parseInt(""+cpf.charAt(10));  
         
       // Confere os d�gitos criados com os d�gitados, se forem diferentes  
       // informa que o CPF � inv�lido.  
       if(v1 != var[9] || v2 != var[10]) {  
          return false;  
                 
       } 
       else
       {  
       	return true;  
       }  
         
   }
}
